<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Let命令</title>
</head>
<body>
  <script>
    /*
    * 基本用法
    * 1. let命令只在代码块中有效
    * 2. 在for循环中，非常的适合let
    */
    // {
    //   let a = 10
    //   var b = 1
    // }
    // // console.log(a) // Uncaught ReferenceError: a is not defined
    // console.log(b) // 1

    /*
    * 不存在变量提升
    */
    // console.log(c) // undefined 存在变量提升
    // var c = 'test' 
    // console.log(d) // Uncaught ReferenceError: d is not defined //变量未提升
    // let d = '呵呵'

    /*
    * 暂时性死区
    * 1. 只要块级作用域中存在let命令，它所声明的变量就绑定在这个区域，不在受外部影响
    * 2. typeof在暂时性死区中不在是一个百分百安全的操作
    */

    // var tmp = 123
    // if (true) {
    //   tmp = '456'
    //   let tmp // ReferenceError: tmp is not defined
    // }

    // console.log(typeof(x))
    // let x = 1

    /*
    * 不允许重复声明
    * 1. 在相同的作用域中不允许对变量进行多次声明
    */
      
  </script>
</body>
</html>